#!/usr/bin/env bash
#
# Compile the Windows resources into the sources
#

set -eu -o pipefail

SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# shellcheck source=/go/src/github.com/docker/cli/scripts/build/.variables
source "$SCRIPTDIR"/../build/.variables

RESOURCES=$SCRIPTDIR/../winresources

TEMPDIR=$(mktemp -d)
trap 'rm -rf $TEMPDIR' EXIT

if [ "$(go env GOHOSTOS)" = "windows" ]; then
	WINDRES=windres
else
	# Cross compiling
	WINDRES=x86_64-w64-mingw32-windres
fi

# Generate a Windows file version of the form major,minor,patch,build (with any part optional)
VERSION_QUAD=$(printf "%s" "$VERSION" | sed -re 's/^([0-9.]*).*$/\1/' | tr . ,)

# Pass version and commit information into the resource compiler
defs=
[ -n "$VERSION" ]      && defs+=( "-D DOCKER_VERSION=\"$VERSION\"")
[ -n "$VERSION_QUAD" ] && defs+=( "-D DOCKER_VERSION_QUAD=$VERSION_QUAD")
[ -n "$GITCOMMIT" ]    && defs+=( "-D DOCKER_COMMIT=\"$GITCOMMIT\"")

makeres() {
	# shellcheck disable=SC2086
	"$WINDRES" \
		-i "$RESOURCES/$1" \
		-o "$3" \
		-F "$2" \
		--use-temp-file \
		-I "$TEMPDIR" \
		${defs[*]}
}

makeres docker.rc pe-x86-64 rsrc_amd64.syso
makeres docker.rc pe-i386   rsrc_386.syso
